#pragma once

#include <Windows.h>

#include "IGameState.h"

class CSGD_Direct3D;
class CSGD_DirectInput;
class CSGD_TextureManager;
class CSGD_XAudio2;

class IGameState;

class Game
{
private:

	IGameState* curState;
	DWORD gameTime;
	int screenHeight;
	int screenWidth;
	bool fullScreen;

	Game(void);
	~Game(void);
	Game(const Game&);
	Game& operator=(const Game&);

	void Update(void);
	void Render(void);
	bool Input(void);

	// SGD Wrappers
	CSGD_Direct3D*			m_pD3D;
	CSGD_DirectInput*		m_pDI;
	CSGD_TextureManager*	m_pTM;
	CSGD_XAudio2*			m_pXA;

public:
	void ChangeState(IGameState* state);
	void Init(HWND hwnd, HINSTANCE hintance, int width, int height);
	bool Main(void);
	void Shutdown(void);
	static Game* GetInstance(void);

	int GetScreenWidth(void) {return screenWidth;}
	int GetScreenHeight(void) {return screenHeight;}

	void SetFullScreen(bool on) {fullScreen = on;}
	bool GetFullScreen(void) {return fullScreen;}

	void FullScreenOn(void);
};